#pragma once

#include "Stdafx.h"
#include "Preset.h"

using namespace System;
using namespace System::Runtime::InteropServices;

namespace OrionFlamesMn
{
	public ref class PresetMn
	{
	public:
		PresetMn(Preset* preset)
		{
			m_Preset = preset;
		}

		float TexScale() { return m_Preset->TexScale(); }
		void TexScale(float texScale) { m_Preset->TexScale(texScale); }
		float TexScalei() { return m_Preset->TexScalei(); }
		float Colorful() { return m_Preset->Colorful(); }
		void Colorful(float colorful) { m_Preset->Colorful(colorful); }
		float Exposure() { return m_Preset->Exposure(); }
		void Exposure(float exposure) { m_Preset->Exposure(exposure); }
		float ScreenInitScale() { return m_Preset->ScreenInitScale(); }
		void ScreenInitScale(float initScale) { m_Preset->ScreenInitScale(initScale); }
		int FirstLevel() { return m_Preset->FirstLevel(); }
		void FirstLevel(int firstLevel) { m_Preset->FirstLevel(firstLevel); }
		int LastLevel() { return m_Preset->LastLevel(); }
		void LastLevel(int lastLevel) { m_Preset->LastLevel(); }
		int Iterations() { return m_Preset->Iterations(); }
		void Iterations(int iterations) { m_Preset->Iterations(iterations); }
		bool Empty() { return m_Preset->Empty(); }
		unsigned int Size() { return m_Preset->Size(); }
		System::String^ Name() { return gcnew System::String(m_Preset->Name().c_str()); }
		System::String^ PixelShaderText() { return gcnew System::String(m_Preset->PixelShaderText().c_str()); }
		XFormMn^ GetXForm(unsigned int index) { return gcnew XFormMn(&m_Preset->Transform(index)); }

	private:
		Preset* m_Preset;
	};
}